package com.fa4j.system.file.service;

import com.fa4j.common.base.model.RemoveCmd;
import com.fa4j.system.file.model.SysFile;
import com.fa4j.system.file.model.SysFileUploadCmd;
import jakarta.validation.Valid;

import java.io.OutputStream;

/**
 * 系统文件 服务接口
 *
 * @since 2025-06-12 08:59:46
 */
public interface SysFileService {

    /**
     * 文件上传
     *
     * @param cmd 参数
     * @return 上传文件
     */
    SysFile upload(@Valid SysFileUploadCmd cmd);

    /**
     * 下载文件
     *
     * @param sysFile      文件
     * @param outputStream 文件输出流
     */
    void download(SysFile sysFile, OutputStream outputStream);

    /**
     * 设置文件地址
     *
     * @param sysFile 文件
     */
    SysFile setFileUrl(SysFile sysFile);

    /**
     * 删除系统文件
     *
     * @param cmd 删除参数
     * @return 系统文件
     */
    SysFile remove(@Valid RemoveCmd<Long> cmd);

}